import { SET_USER_CARTS_INFO, SET_USER_CARTS_INFO1, SET_USER_INFO, REMOVE_USER_INFO, SET_USER_TOKEN } from "./mutation-type";
import { GoodsCenterApi, BaseCenterApi} from '@/api/serves.js'
import { checkAppApi } from '@/api/checkApp.js'
import { pathToBase64, base64ToPath } from 'image-tools'
import { loading, toast } from "@/common/utils/utils.js";
export default {
	logOut({ commit }) {
		uni.showLoading()
		BaseCenterApi.logOut().then(res=> {
			uni.hideLoading()
			console.log('退出登录', res);
			if(res.code == 1) {
				uni.switchTab({
					url: '/pages/tabbar/index/index'
				})
				commit(REMOVE_USER_INFO)
			}else {
				uni.showToast({
					title: res.msg
				})
			}
		})
	},
	// 微信登录
	weixinLogin({ commit, dispatch }, data) {
		uni.showLoading()
		uni.getProvider({
			service:'oauth',
			success(pres){
				if(~pres.provider.indexOf('weixin')){
					uni.login({
					  provider: 'weixin',
					  success:  (loginRes)=> {
						  console.log('微信登录', loginRes);
							let { openid } = loginRes.authResult
							BaseCenterApi.wxLogin({ openid }).then(res=> {
								uni.hideLoading()
								console.log('微信登录调用后台', res);
								// code 为1 登陆成功且已绑定手机号 为2 没有绑定那个手机号
								if(res.code == 1) { // 登录成功 有绑定手机号
									commit(SET_USER_TOKEN, res.data.token)
									setTimeout(()=>{
										dispatch('getUserInfo')
										uni.switchTab({
											url: '/pages/tabbar/index/index'
										})
									},1500)
									uni.showToast({
										title: '登陆成功'
									})
								}else if(res.code == 2) { // 登录成功 没有绑定手机号
									uni.navigateTo({
										url: '/pages/login/bindPhone/bindPhone'
									})
								}else { // 登录失败 没有绑定手机号
									this.$u.toast(res.msg)
								}
							})
					  },
					  fail: (err) => {
							loading.hideLoading()
							console.log('微信授权失败', err);
							uni.$emit('weixinLogin', {type: 0})
						}
					});
				}else{
					uni.showToast({
						title: '手机未安装该服务或者APP'
					})
				}
			},
		})
	},
	getUserCartsInfo({ commit }, params) {
	let { goods_type = null, isGetAll = false, merch_id = "" } = params
	console.log(isGetAll);
	// 线上购物车
	if(goods_type==1 && isGetAll){
		// 获取购物车列表 -- 每个店铺的列表，店铺内商品列表 merch_goods_list: [{goods_list: []}, {}]
		GoodsCenterApi.getlists({ goods_type: 1,merch_id }).then(res => {
		  console.log('获取购物车',Array.isArray(res.data), res);
		  if (res.code == 1 && !Array.isArray(res.data)) {
			// 各个店铺的 购物车列表
			let supplierCartList = Object.values(res.data.merch_goods_list)
			let cartList = []
			// 遍历每个商品 添加是否选中 以及添加选中的商品列表
			supplierCartList.map(item=> {
			  // 初始化添加店铺是否选中
			  item.supplierChecked = false
			  // 初始化添加 店铺选中的商品列表
			  item.checkedList = []
			  cartList = cartList.concat(item.goods_list)
			  item.goods_list.map(item1=> {
				item1.goodsChecked = false
			  })
			})
			commit(SET_USER_CARTS_INFO, {supplierCartList,cartList})
			return
		  }
		  commit(SET_USER_CARTS_INFO, {supplierCartList:[],cartList:[]})
		})
	}
	// 商圈购物车
	if(goods_type==5 && isGetAll){
		GoodsCenterApi.getlists({ goods_type: 5, merch_id }).then(res => {
		  console.log('获取购物车列表', res);
		  if (res.code == 1) {
			let supplierCartList = []
			let cartList = []
			if(!Array.isArray(res.data)){
				// 各个店铺的 购物车列表
				supplierCartList = Object.values(res.data.merch_goods_list)
				// 遍历每个商品 添加是否选中 以及添加选中的商品列表
				supplierCartList.map(item=> {
				  // 初始化添加店铺是否选中
				  item.supplierChecked = false
				  // 初始化添加 店铺选中的商品列表
				  item.checkedList = []
				 
				  if(item.goods_list){
					   cartList = cartList.concat(item.goods_list)
					  item.goods_list.map(item1=> {
					  	 item1.goodsChecked = false
					  })
				  }else{
					  item.goods_list = [] // 删完了就赋值 [] , 防止页面留着最后一件商品的数据
				  }
				  
				})
			  }else{
				supplierCartList = []
			  }
			  // console.log('cartList111',cartList);
			commit(SET_USER_CARTS_INFO1, {supplierCartList,cartList})
			}
		})
	}
  },
	// 获取用户信息
	getUserInfo({ commit }) {
		return new Promise((resolve, reject)=> {
			BaseCenterApi.getInfo().then(res => {
				console.log('获取用户信息', res.data[0]);
				resolve(res)
				  if(res.code == 1){
					   commit(SET_USER_INFO, res.data[0] || {})
				  }
			})
		})
		
	},
	// 获取手机验证码
	getCode({ commit, dispatch }, data) {
		return new Promise((resolve, reject)=> {
			loading.showLoading()
			BaseCenterApi.sendcode(data).then(res=> {
				console.log('获取手机验证码', res);
				loading.hideLoading()
				resolve(res)
			})
		})
	},
	// 上传图片 返回 图片的路径
	upload({ commit }, files) {
		console.log('files-actions', files);
		let num = 0
		let urlList = []
		return new Promise((resolve,reject)=> {
			if(files.length <=0) resolve(urlList)
			for (let item of files) {
				pathToBase64(item.url).then(base64=> {
					// let _base64 = base64.replace('text/html', 'image/jpeg')
					// console.log('图片转base64', base64);
					BaseCenterApi.upload({image: base64}).then(res=> {
						console.log('上传base64返回的路径', res);
						if(res.code == 1) {
							num++
							urlList.push(res.data)
							if(num == files.length) {
								resolve(urlList)
							}
						}else {
							resolve(urlList)
						}
					})
				})
				if(num == files.length) {
					break
				}
			}
		})
	},
	// 检查跟新app
	checkApp() {
		let oldVersion = getApp().globalData.version
		console.log('actios中调用检查更新: oldVersion', oldVersion);
		checkAppApi.getAppInfo().then(res => {
			console.log('newVersion: 检查跟新app', res);
			if (res.code == 1) {
				let newVersion = res.data.app_version.split('.')
				let oldVersion = getApp().globalData.version.split('.')
				console.log('newVersion-1', newVersion);
				console.log('oldVersion-1', oldVersion);
				if(newVersion[0]*1 > oldVersion[0]*1 || newVersion[1]*1 > oldVersion[1]*1 || newVersion[2]*1 > oldVersion[2]*1) {
					uni.showModal({
						title: '提示',
						content: '发现有新版本可以升级!', 
						success: (res1)=> {
							if (res1.confirm) {
								setTimeout(()=> {
									uni.navigateTo({ // 自定义一个addr，代表是进入app检测到升级
										url:'/pages/mine/checkApp/checkApp?addr=1&app_update_package='+ res.data.app_update_package
									})
								}, 500)
							}
						}
					});
				}
			}
		})
	},
};
